// var Q = require('q');
//
// function fromCallback(fn) {
//   return Q.Promise(function(resolve, reject) {
//     try {
//       return fn(function(err, data, res) {
//         if (err) {
//           err.res = res;
//           return reject(err);
//         }
//         return resolve(data);
//       });
//     } catch (err) {
//       return reject(err);
//     }
//   });
// }
//
// var consul = require('consul')({
//   promisify: fromCallback
// });


var nats = require('nats');

var nats = nats.connect({
  url: 'nats://localhost:4222'
});

// nats.publish('hello_queue', 'hello');
//
// nats.subscribe('hello_queue', {
//   max: 3
// }, function(msg) {
//   console.log(msg);
// })
//
// nats.publish('hello_queue', 'helloagain');
// nats.publish('hello_queue', 'helloagain');
// nats.publish('hello_queue', 'helloagain');


var sid = nats.request('unqueue', true, {
  'max': 1
}, function(res) {
  if (res) {
    console.log('success');
  } else {
    console.log('fail');
  }
});

nats.timeout(sid, 500, 1, function(err) {
  // console.log('error', err);
  if (err) {
    console.log('timeout');
  }
  if (!err) {
    console.log('no timeout');
  }
})

nats.subscribe('unqueue', function(msg, reply) {
  console.log(msg);
  nats.publish(reply, 'response');
})
